package edu.nf.ch09.web;

import edu.nf.ch09.web.vo.ResultVO;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;

/**
 * @author wangl
 * @date 2025/5/15
 */
@RestController
public class UploadController extends BaseController{

    /**
     * MultipartFile是springmvc封装上传文件的对象
     * ，这个对象包含文件名、类型、大小、以及文件的输入流等信息
     * @param file
     * @return
     */
    @PostMapping("/upload")
    public ResultVO upload(@RequestParam("files") MultipartFile[] files) throws IOException {
        //获取上传的目录
        File uploadDir = new File("/Users/wangl/work/upload");
        if(!uploadDir.exists()) {
            uploadDir.mkdirs();
        }
        //循环文件数组
        for(MultipartFile file : files) {
            //获取文件名
            String fileName = file.getOriginalFilename();
            System.out.println(fileName);
            //获取文件大小
            long size = file.getSize();
            System.out.println(size);
            //获取文件的类型
            String contentType = file.getContentType();
            System.out.println(contentType);
            //构建上传路径（上传目录的绝对路径 + 文件名）
            Path path = FileSystems.getDefault().getPath(uploadDir.getAbsolutePath(), fileName);
            //执行上传
            file.transferTo(path);
            //响应vo
        }
        return success();
    }
}